package Leetcode.LeetcodeDemo1;

import java.util.ArrayList;
import java.util.List;

public class LeetCode46 {
    public List<List<Integer>> permute(int[] nums) {
        List<List<Integer>> list=new ArrayList<List<Integer>>();
        progress(nums,0,list);
        return list;
    }
    public void progress(int[] nums,int i,List<List<Integer>> list){
        if(i==nums.length){
            List<Integer> newlist=new ArrayList<Integer>();
            for(int k=0;k<nums.length;k++){
                newlist.add(nums[k]);
            }
            list.add(newlist);
        }
        for(int j=i;j<nums.length;j++){
            swap(nums,i,j);
            progress(nums,i+1,list);
            swap(nums,i,j);
        }
    }
    public void swap(int[] arr,int i,int j){
        int tmp=arr[i];
        arr[i]=arr[j];
        arr[j]=tmp;
    }
}
